1. Field of the Invention
This invention is related to systems and, more particularly, to buses within digital systems.
2. Description of the Related Art
A bus is frequently used in digital systems to interconnect a variety of devices included in the digital system. Generally, one or more devices are connected to the bus, and use the bus to communicate with other devices connected to the bus. As used herein, the term “agent” refers to a device which is capable of communicating on the bus. The agent may be a requesting agent if the agent is capable of initiating transactions on the bus and may be a responding agent if the agent is capable of responding to a transaction initiated by a requesting agent. A given agent may be capable of being both a requesting agent and a responding agent. Additionally, a “transaction” is a communication on the bus. The transaction may include an address transfer and optionally a data transfer. Transactions may be read transactions (transfers of data from the responding agent to the requesting agent) and write transactions (transfers of data from the requesting agent to the responding agent). Transactions may further include various coherency commands which may or may not involve a transfer of data.
The bus is a shared resource among the agents, and thus may affect the performance of the agents to the extent that the bus may limit the amount of communication by each agent and the latency of that communication. Generally, a bus may be characterized by latency and bandwidth. The latency may be affected by the amount of time used to arbitrate for the bus and to perform a transaction on the bus. The bandwidth may be affected by the amount of information (e.g. bits or bytes) that may be transmitted per cycle, as well as the amount of time used to perform the transfer. Both latency and bandwidth may be affected by the physical constraints of the bus and the protocol employed by the bus. When a bus is shared by more than one agent to transfer information, a transient collision may occur between a first agent driving the bus in a clock cycle and a second agent driving the bus in an immediately subsequent clock cycle. During the transient collision, both agents are driving the same lines. In order to avoid this transient collision, either an agent must delay driving the bus during a clock cycle that it is allowed to drive the bus, or an idle clock cycle must be added when the bus is to be driven by a different agent than the agent currently driving the bus. Either solution may negatively impact the latency and/or bandwidth of the bus.